const express = require('express');
const common = require('../../libs/common');
const mysql = require('mysql');
const SMSClient = require('@alicloud/sms-sdk') // 短信sdk
const accessKeyId = 'LTAIAQxpYu828Lo6'
const secretAccessKey = 'ub29cNxgS286szwirwXqKDH2V6BiAC'
let smsClient = new SMSClient({ accessKeyId, secretAccessKey })

var db = mysql.createPool({ host: 'localhost', user: 'root', password: '123456', database: 'zouba' });

var router = express.Router();
module.exports = function () {

  //登录
  router.post('/userlogin', (req, res) => {

    console.log(req.body);
    var username = req.body.username;
    var password = common.md5(req.body.password + common.MD5_SUFFIX);
    var password2 = req.body.password;

    //用户是否为空
    if (username == '') {
      res.json({
        code: 1,
        message: '用户名不能为空'
      });
      return;
    }
    //密码是否为空
    else if (password == '') {
      res.json({
        code: 2,
        message: '密码不能为空'
      });
      return;
    }
    else {
      db.query(`SELECT * FROM user_table WHERE username='${req.body.username}' && isactive!='N'`, (err, data) => {
        if (err) {
          res.status(500).send('数据库错误').end();
        }
        else {
          if (data.length == 0) {
            res.json({
              code: 3,
              message: '没有找到该用户'
            });
            return;
          }
          else {
            if (data[0].password == password2) {
              req.session.sign = true;
              req.session.name = username;
              res.json({
                code: 200,
                message: '登录成功',
                username: username
              });
              return;
            }
            else {
              res.json({
                code: 4,
                message: '密码不正确'
              });
              return;
            }
          }
        }
      })
    }
  });
  //短信接口
  router.post('/getshortinfor', (req, res) => {
    var phone = req.body.regusername;
    var username = req.body.regusername;
    var password = req.body.regpassword;
    //发送短信之前在数据库中找找有没有这个人
    db.query(`SELECT * FROM user_table WHERE username='${req.body.regusername}' AND isactive='Y'`, (err, data) => {
      console.log(data);
      if (err) {
        res.status(500).send('数据库错误').end();
      }
      else {
        //res.send(data).end();
        if (data != '') {
          res.json({
            code: 4,
            message: '你来晚啦，该名已经被注册了'
          });
        } else {
          const getJSON = function (url) {
            const promise = new Promise(function (resolve, reject) {
              let verificationCode = Math.random().toString(36).substr(2, 4);
              let strCode = `{"code":"${verificationCode}"}`
              //发送短信
              smsClient.sendSMS({
                PhoneNumbers: phone,           //必填:待发送手机号。支持以逗号分隔的形式进行批量调用，批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式；发送国际/港澳台消息时，接收号码格式为00+国际区号+号码，如“0085200000000”
                SignName: '秦天雄',             //必填:短信签名-可在短信控制台中找到
                TemplateCode: 'SMS_142060109', //必填:短信模板-可在短信控制台中找到，发送国际/港澳台消息时，请使用国际/港澳台短信模版
                TemplateParam: strCode         //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时。
              }).then(function (respon) {
                console.log(respon)
                if (respon.Code === 'OK') {
                  db.query(`INSERT INTO user_table (username, password,isactive,verificationcode)
                  VALUES('${username}', '${password}','N','${verificationCode}')`, (err, data) => {
                      if (err) {
                        res.status(500).send('数据库增加失败').end();
                      }
                      else {
                        res.json({
                          code: 200,
                          message: '短信发送成功,请注意查收!'
                        });
                        return;
                      }
                    })
                }
              },
                function (err) {
                  console.log(err)
                  res.json({
                    code: 500,
                    message: '短信发送失败！'
                  })
                })
            });

            return promise;
          };

          getJSON("/").then(function (json) {
            console.log('Contents: ' + json);
          }, function (error) {
            console.error('出错了', error);
          });
        }
      }
    })
  })

  //注册接口
  router.post('/register', (req, res) => {
    var phone = req.body.regusername;
    var username = req.body.regusername;
    var password = req.body.regpassword;
    var repassword = req.body.regpassword2;
    var verificationCode = req.body.verificationCode;
    console.log(req.body);

    //用户是否为空
    if (username == '') {
      res.json({
        code: 1,
        message: '用户名不能为空'
      });
      return;
    }
    //密码是否为空
    else if (password == '') {
      res.json({
        code: 2,
        message: '密码不能为空'
      });
      return;
    }
    //两次输入的密码不一致
    else if (password != repassword) {
      res.json({
        code: 3,
        message: '两次输入的密码不一样耶'
      });
      return;
    }
    else {
      db.query(`SELECT * FROM user_table WHERE username='${req.body.regusername}' AND isactive='Y'`, (err, data) => {
        console.log(data);
        if (err) {
          res.status(500).send('数据库错误').end();
        }
        else {
          //res.send(data).end();
          if (data != '') {
            res.json({
              code: 4,
              message: '你来晚啦，该名已经被注册了'
            });
          }
          else {
            db.query(`SELECT verificationCode FROM user_table WHERE username='${req.body.regusername}'`, (err, data) => {
              if (err) {
                res.status(500).send('数据库查询失败').end();
              } else {
                if (data[0].verificationCode === verificationCode) {
                  db.query(`UPDATE user_table set isactive='Y' where username='${phone}'`, (err, data) => {
                    if (err) {
                      res.status(500).send('数据库更新失败').end();
                    }
                    else {
                      res.json({
                        code: 200,
                        message: '注册成功！',
                        name: req.body.regusername
                      });
                      return;
                    }
                  })
                } else {
                  res.json({
                    code: 501,
                    message: '验证码错误。'
                  });
                }
              }
            })
          }
        }
      })
    }
  });
  //请求首页所有的
  router.post('/duanzi', (req, res) => {
    db.query(`SELECT * FROM smilewordnopic_table`, (err, data) => {
      if (err) {
        res.status(500).send('数据库错误').end();
      }
      else {
        res.send(data).end();
      }
    })
  });
  //todolist
  router.get('/getMessage', (req, res) => {
    db.query(`SELECT * FROM todolist_table WHERE delet_flag='Y'`, (err, data) => {
      if (err) {
        res.status(500).send('数据库错误').end();
      }
      else {
        res.send(data).end();
      }
    })
  });
  //点赞
  router.post('/someonelike', (req, res) => {
    console.log(req.body);
    var likeid = req.body.likeid;
    var likeip = req.body.ip;

    db.query(`SELECT * FROM isclick_table WHERE ID='${likeid}' AND ip='${likeip}'`, (err, data) => {
      if (err) {
        res.status(500).send('記録查找失敗。我的輸入法抽風了。').end();
      } else {
        if (data.length == 0) {
          db.query(`INSERT INTO isclick_table (ID,ip) VALUES ('${likeid}','${likeip}')`, (err, datawrite) => {
            if (err) {
              res.status(500).send('記録第一次點擊數失敗。我的輸入法抽風了。').end();
            } else {
              db.query(`SELECT * FROM smilewordnopic_table WHERE ID='${likeid}'`, (err, datafind) => {
                if (err) {
                  res.status(500).send('數據庫沒有找到此數據。為啥我的輸入法成繁體了？').end();
                }
                else {
                  db.query(`UPDATE smilewordnopic_table set likenum='${datafind[0].likenum + 1}' WHERE ID='${likeid}'`, (err, datalast) => {
                    if (err) {
                      res.status(500).send('数据库错误').end();
                    }
                    else {
                      // res.send(datalast).end();
                      res.json({
                        code: 200,
                        message: '点赞的人最帅最漂亮！'
                      });
                      return;
                    }
                  })
                }
              })
            }
          })
        } else {
          // res.status(500).send('記録查找成功，已經有記録了。我的輸入法抽風了。').end();
          res.json({
            code: 500,
            message: '已经点过赞了'
          });
          return;
        }
      }
    })
  });
  //吐槽
  router.post('/someonedislike', (req, res) => {
    console.log(req.body);
    var dislikeid = req.body.dislikeid;
    var dislikeip = req.body.ip;

    db.query(`SELECT * FROM isdislikeclick_table WHERE ID=${dislikeid} AND ip=${dislikeip}`, (err, data) => {
      if (err) {
        res.status(500).send('記録查找失敗。我的輸入法抽風了。').end();
      } else {
        if (data == null || (data != null && data.length == 0)) {
          db.query(`INSERT INTO isdislikeclick_table (ID,ip) VALUES (${dislikeid},${dislikeip})`, (err, datawrite) => {
            if (err) {
              res.status(500).send('記録第一次點擊數失敗。我的輸入法抽風了。').end();
            } else {
              db.query(`SELECT * FROM smilewordnopic_table WHERE ID=${dislikeid}`, (err, datafind) => {
                if (err) {
                  res.status(500).send('數據庫沒有找到此數據。為啥我的輸入法成繁體了？').end();
                }
                else {
                  db.query(`UPDATE smilewordnopic_table set dislikenum='${datafind[0].dislikenum + 1}' WHERE ID=${dislikeid}`, (err, datalast) => {
                    if (err) {
                      res.status(500).send('数据库错误').end();
                    }
                    else {
                      // res.send(datalast).end();
                      res.json({
                        code: 200,
                        message: '你为什么要吐槽！'
                      });
                      return;
                    }
                  })
                }
              })
            }
          })
        } else {
          // res.status(500).send('記録查找成功，已經有記録了。我的輸入法抽風了。').end();
          res.json({
            code: 500,
            message: '已经吐槽过一次了！'
          });
          return;
        }
      }
    })
  });
  //轮播
  router.post('/getbanner', (err, res) => {
    db.query(`SELECT * FROM banner_table`, (err, data) => {
      if (err) {
        res.status(500).send('数据库错误').end();
      }
      else {
        res.send(data).end();
      }
    })
  });

  //返回我的信息页所有数据
  router.post('/getmyallinfor',(req,res) => {
    var username = req.body.username;
    console.log(req.body);
    db.query(`SELECT * FROM user_table where username='${username}'`, (err, data) => {
      if (err) {
        res.status(500).send('数据库错误').end();
      }
      else {
        db.query(`SELECT * FROM article_table where guid='${username}'`, (err, data2) => {
          if (err) {
            res.status(500).send('数据库错误').end();
          }
          else {
            res.json({
              code: 200,
              userInfor: data,
              articleInfor: data2
            });
            return;
          }
        })
      }
    })

  });

  //返回设置中心的所有数据（nickname，gender，birthday，likedo）
  router.post('/getsetsinfo', (req, res) => {
    var guid = req.body.guid;
    console.log(req.body);
    db.query(`SELECT nickname,gender,birthday,likedo FROM user_table where username='${guid}'`, (err, data) => {
      if (err) {
        res.status(500).send('数据库错误').end();
      }
      else {
        res.send(data).end();
      }
    })
  })

  //处理修改姓名
  router.post('/changename', (req, res) => {
    var guid = req.body.guid;
    var nickname = req.body.nickname;
    console.log(req.body);
    if (nickname == '' || nickname == undefined) {
      res.json({
        code: 501,
        message: '所填字段不能为空'
      })
    } else {
      db.query(`UPDATE user_table set nickname='${nickname}' WHERE username='${guid}'`, (err, data) => {
        if (err) {
          res.status(500).send('数据库错误').end();
        }
        else {
          res.json({
            code: 200,
            message: '更新成功^_^!'
          });
          return;
        }
      })
    }
  });

  //处理修改性别
  router.post('/changegender', (req, res) => {
    var guid = req.body.guid;
    var gender = req.body.gender;
    console.log(req.body);
    if (gender == '' || gender == undefined) {
      res.json({
        code: 501,
        message: '所填字段不能为空'
      })
    } else if (gender != '男' && gender != '女') {
      res.json({
        code: 501,
        message: '你是中性人嘛^_^?'
      })
    } else {
      db.query(`UPDATE user_table set gender='${gender}' WHERE username='${guid}'`, (err, data) => {
        if (err) {
          res.status(500).send('数据库错误').end();
        }
        else {
          res.json({
            code: 200,
            message: '变性成功^_^!'
          });
          return;
        }
      })
    }
  });
  //处理修改生日
  router.post('/changebirthday', (req, res) => {
    var guid = req.body.guid;
    var birthday = req.body.birthday;
    console.log(req.body);
    if (birthday == '' || birthday == undefined) {
      res.json({
        code: 501,
        message: '所填字段不能为空'
      })
    } else {
      db.query(`UPDATE user_table set birthday='${birthday}' WHERE username='${guid}'`, (err, data) => {
        if (err) {
          res.status(500).send('数据库错误').end();
        }
        else {
          res.json({
            code: 200,
            message: '更新成功^_^!'
          });
          return;
        }
      })
    }
  });

  //处理修改likedo
  router.post('/changelikedo', (req, res) => {
    var guid = req.body.guid;
    var likedo = req.body.likedo;
    console.log(req.body);
    if (likedo == '' || likedo == undefined) {
      res.json({
        code: 501,
        message: '所填字段不能为空'
      })
    } else {
      db.query(`UPDATE user_table set likedo='${likedo}' WHERE username='${guid}'`, (err, data) => {
        if (err) {
          res.status(500).send('数据库错误').end();
        }
        else {
          res.json({
            code: 200,
            message: '更新成功^_^!'
          });
          return;
        }
      })
    }
  });

  router.post('/gettodolist', (req, res) => {
    db.query(`SELECT * FROM todolist_table  WHERE from_where='admin' AND delet_flag='N'`, (err, data) => {
      if (err) {
        res.status(500).send('数据库错误.').end();
      }
      else {
        res.send(data).end();
      }
    })
  });

  return router;
};